package ClasesBasicas;

public class Caballo extends Figura{

	public Caballo(int fila, int columna, boolean esNegra, Figura[][] array,
			boolean[][] aMovimiento,int codPieza) {
		super(Tipo.Caballo, fila, columna, esNegra, array, aMovimiento, codPieza);

	}

	/**
	 * He tenido que poner un try catch a cada posicion que pongo a true porque
	 * sino sale error, no funciona poniendolo un try a todo el metodo xk al
	 * haber error sale directamente y no pone a true las posiicones que kedaban
	 */
	public void posiblesMovimientos() {

		try {
			aMovimiento[fila - 2][columna + 1] = true;
		} catch (Exception e) {

		}
		try {
			aMovimiento[fila - 2][columna - 1] = true;
		} catch (Exception e) {

		}
		try {
			aMovimiento[fila - 1][columna + 2] = true;
		} catch (Exception e) {

		}
		try {
			aMovimiento[fila - 1][columna - 2] = true;
		} catch (Exception e) {

		}
		try {
			aMovimiento[fila + 1][columna + 2] = true;
		} catch (Exception e) {

		}
		try {
			aMovimiento[fila + 1][columna - 2] = true;
		} catch (Exception e) {

		}
		try {
			aMovimiento[fila + 2][columna + 1] = true;
		} catch (Exception e) {

		}
		try {
			aMovimiento[fila + 2][columna - 1] = true;
		} catch (Exception e) {

		}

	}
	
	public boolean jaque(){
		return movimientoCaballo();
	}
	public boolean movimientoCaballo(){
		boolean jaque=false;
		int i;
		for (i = 0; i < aMovimiento.length; i++) {
			for (int j = 0; j < aMovimiento[i].length; j++) {

				// Si hay pieza donde se puede mover
				if (aMovimiento[i][j] == true && array[i][j] != null) {
					if (sonMismoColor(esNegra, array[i][j])) {
						aMovimiento[i][j] = false;
					} else {
						aMovimiento[i][j] = true;
					 if (array[i][j].tipo == Tipo.Rey) {
						jaque = true;
					}
					}

				}

			}
		}
		return jaque;
	}
	public void dondeSePuedeMover() {
		
		posiblesMovimientos();
		movimientoCaballo();		
	}

	public static void main(String[] args) {
		/**
		 * Tablero tb = new Tablero(false);
		 * 
		 * Caballo c = new Caballo(2, 1, true, tb.getArray(),
		 * tb.getaMovimiento()); Caballo c2 = new Caballo(4, 2, true,
		 * tb.getArray(), tb.getaMovimiento()); c.dondeSePuedeMover();
		 * 
		 * for (int i = 0; i < tb.getaMovimiento().length; i++) { for (int j =
		 * 0; j < tb.getaMovimiento()[i].length; j++) {
		 * System.out.print(tb.getaMovimiento()[i][j]); System.out.print("   ");
		 * } System.out.println(""); }
		 */
	}

}
